650 COLOR 15:PRINT"M)";:COLOR 7:PRINT"ain message base. ";
660 COLOR 15:PRINT"J)";:COLOR 7:PRINT"ump to conference message base. ";
670 COLOR 15:PRINT"Q)";:COLOR 7:PRINT"uit and exit to DOS.":PRINT:PRINT"Your selection: ";
680 A$=INPUT$(1):COLOR 15
690 IF A$="M" OR A$="m" THEN PRINT "Main message base":GOTO 740
700 IF A$="J" OR A$="j" THEN CONFERENCE=1:PRINT"Jump to conference":GOTO 740
710 IF A$="q" OR A$="Q" THEN PRINT"QUIT" ELSE GOSUB 570:GOTO 680
720 BEEP:PRINT"END PROGRAM AND RETURN TO DOS (";:COLOR 31:PRINT"Y/N";:COLOR 15:PRINT")? ";
730 A$=INPUT$(1):IF A$="y" OR A$="Y" THEN PRINT"Yup.":FOR A=1 TO 1500:NEXT:SYSTEM ELSE IF A$="N" OR A$="n" THEN PRINT"Not now buddy!":FOR A=1 TO 1500:NEXT:RUN ELSE BEEP:GOTO 730
740 COLOR 7:IF CONFERENCE THEN PRINT"ENTER name of conference to access: "; ELSE FILE$=MAINFILE$:GOTO 810
750 COLOR 15:LINE INPUT FILE$:COLOR 7
760 IF FILE$="" THEN GOSUB 570:PRINT:DISP$="++ NO INPUT FILE NAME ++":GOSUB 610:FOR A=1 TO 2000:NEXT:SYSTEM
770 IF CONFERENCE THEN I=INSTR(FILE$,"."):IF I=0 THEN FILE$=FILE$+"M.def"
780 FOR A=1 TO LEN(FILE$)
790 T=ASC(MID$(FILE$,A,1)):IF T>96 THEN T=T-32:MID$(FILE$,A,1)=CHR$(T)
800 NEXT
810 OPEN"R",#1,FILE$,128
820 IF LOF(1)=0 THEN GOSUB 570:PRINT:DISP$="++ FILE DOES NOT EXIST ++":GOSUB 610:CLOSE:KILL FILE$:FOR A=1 TO 1000:NEXT:RUN
830 '
840 '--------------> file exists, set field statements <---------------
850 '
860 FIELD#1,128 AS S$
870 PRINT:PRINT"Checking messages ";
880 GET#1,1:GOSUB 510
890 LE=VAL(MID$(S$,1,8)) 'number of last message on system
900 CJ=VAL(MID$(S$,11,10)) 'current caller number
910 REC1=VAL(MID$(S$,52,5)) 'record number of first record in the USERS file
920 NUR=VAL(MID$(S$,57,5)) 'record number of next available record in user file
930 HUR=VAL(MID$(S$,62,5)) 'record number of last record in USERS file
940 FMR=VAL(MID$(S$,68,7)) 'record number where first message begins
950 NMR=VAL(MID$(S$,75,7)) 'record number of next available record in msg file
960 HMR=VAL(MID$(S$,82,7)) 'record number of the last record in message file
970 GOSUB 510
980 IF LE=0 OR FMR=0 OR NMR=0 OR HMR=0 THEN CLOSE:PRINT:PRINT:DISP$="++ NOT A RBBS-PC MESSAGE FILE ++":GOSUB 610:GOSUB 570:CLOSE:FOR A=1 TO 2000:NEXT:RUN
990 '
1000 '-------------> read header record numbers into the array <-------------
1010 ' msgs(recordnumber,tosysop,fromsyop)
1020 MG=0 ' <--- incrementor to count messages
1030 NXTMSG=FMR '<--- next header begins at this record number
1040 GET#1,NXTMSG
1050 MG=MG+1
1060 RD$=(MID$(S$,1,1)) 'if rd$="*" message is read only
1070 MT=VAL(MID$(S$,2,4)) 'message number of this message
1080 FI$=(MID$(S$,6,31)) 'name of person message is from
1090 T$=(MID$(S$,37,21)) 'name of person who message who message it to
1100 TM$=(MID$(S$,59,8)) 'time of day msge was sent (HH:MM:SS)
1110 D$=(MID$(S$,67,9)) 'date message was sent
1120 SUB$=(MID$(S$,76,25)) 'subject of message
1130 PAS$=(MID$(S$,101,15)) 'password for the message (if any)
1140 ACTIVE$=(MID$(S$,116,1)) 'active or killed indicator
1150 I=INSTR(TM$,":"):IF I=0 THEN MG=MG-1:PRINT "corrupt msg in"NXTMSG:ACTIVE$=CHR$(226):S1$=S$:MID$(S1$,116,1)=ACTIVE$:SYAMA=1:GOSUB 2730:NXTMSG=NXTMSG+1:GOTO 1040
1160 MSGLN=VAL(MID$(S$,117,6)) 'number of 128 byte sectors in msg, incl hdr
1170 IF FETCH THEN RETURN ELSE MSGS(MT,0)=NXTMSG
1180 '-------> test if messages is active or killed here <--------
1190 '
1200 'end of test
1210 '
1220 IF LEFT$(T$,5)="SYSOP" THEN MAIL=MAIL+1
1230 IF MAIL=1 THEN PRINT:PRINT"Mail for the SYSOP: ";:MAIL=MAIL+1
1240 GOSUB 510 'if no mail at this point, print dots
1250 IF LEFT$(T$,5)="SYSOP" THEN PRINT MT;:MSGS(MG,1)=MT
1260 IF LEFT$(FI$,5)="SYSOP" THEN MSGS(MG,2)=MT:SENT=SENT+1
1270 NXTMSG=NXTMSG+MSGLN 'next message begins at this point unless at end
1280 IF MT<LE THEN 1040 ELSE LMSG=MT
1290 PRINT:IF SENT=0 THEN 1390
1300 PRINT"Messages FROM you: ";
1310 FOR A=1 TO MG:IF MSGS(A,2) THEN PRINT MSGS(A,2);
1320 NEXT
1330 FETCH=FMR:GET#1,FMR:GOSUB 1060:IF DISP1$="" THEN 2020 ELSE FMSG=MT
1340 COLOR 15:PRINT:PRINT"Press any key to continue...";:AJ$=INPUT$(1):COLOR 7
1350 IF DISP1$="" THEN 2020
1360 '--------------> get message headers and edit <------------------
1400 IF FETCH=0 THEN BEEP:COLOR 15:PRINT"++ NO MESSAGES FOUND IN ";FILE$;" ++";:CLOSE:FOR A=1 TO 1000:NEXT:PRINT:PRINT"Press any key...";:A$=INPUT$(1):RUN
2730 LSET S$=S1$:IF SYAMA THEN PUT#1,NXTMSG ELSE PUT#1,FETCH
2740 IF SYAMA THEN SYAMA=0:RETURN ELSE 1390
2750 '
2760 'Quit message editor
2770 '
2780 IF A$="q" OR A$="Q" THEN COLOR 15:PRINT"QUIT EDITOR" ELSE 2850
2790 BEEP:PRINT"ARE YOU SURE (";:COLOR 31:PRINT"Y/N";:COLOR 15:PRINT")? ";
2800 QN$=INPUT$(1):IF QN$="y" OR QN$="Y" THEN PRINT"Yup.":GOSUB 510:CLOSE:FOR A=1 TO 1000:NEXT:RUN
2810 IF QN$="N" OR QN$="n" THEN PRINT"No way, Jose!":GOTO 1430 ELSE BEEP:GOTO 2800
2820 '
2830 'delete or undelete a message. (toggle back and fourth)
2840 '
2850 IF A$="D" OR A$="d" THEN COLOR 15:PRINT"DELETE/UNDELETE TOGGLED":COLOR 7 ELSE 2910
2860 T=ASC(ACTIVE$):IF T=225 THEN T=226 ELSE T=225
2870 ACTIVE$=CHR$(T)
2880 S1$=S$:MID$(S1$,116,1)=ACTIVE$:GOTO 2730
2890 '
2900 '
2910 IF A$="s" OR A$="S" THEN COLOR 15:PRINT"SHOW HEADER":COLOR 7:GOTO 1370
2920 '
2930 'copy a record from one file to another
2940 '
2950 IF A$="c" OR A$="C" THEN COLOR 15:PRINT"COPY MESSAGE" ELSE 3450
2960 IF CONFERENCE=0 THEN PRINT"NAME OF CONFERENCE FILE TO COPY MESSAGE TO: ";:GOTO 3030
2970 PRINT "1) ";:COLOR 7:PRINT"COPY TO MAIN MESSAGE BASE ";:COLOR 15
2980 PRINT "2) ";:COLOR 7:PRINT"COPY TO ANOTHER CONFERENCE MESSAGE BASE"
2990 COLOR 15:PRINT"YOUR SELECTION: ";:COLOR 7
3000 AK$=INPUT$(1):IF AK$="1" OR AK$="2" THEN 3010 ELSE BEEP:GOTO 3000
3010 PRINT AK$
3020 IF AK$="1" THEN FILE2$=MAINFILE$:GOTO 3100 ELSE PRINT"NAME OF CONFERENCE FILE TO COPY MESSAGE TO: ";
3030 LINE INPUT FILE2$:IF FILE2$="" THEN BEEP:GOTO 1390
3040 IF CONFERENCE AND AK$="2" THEN 3060
3050 IF CONFERENCE THEN 3070
3060 FILE2$=FILE2$+"M.DEF"
3070 FOR AK=1 TO LEN(FILE2$) 'convert to UPPER CASE
3080 TK=ASC(MID$(FILE2$,AK,1)):IF TK>96 THEN TK=TK-32:MID$(FILE$,AK,1)=CHR$(TK)
3090 NEXT AK
3100 OPEN"R",#2,FILE2$,128
3110 FIELD#2,128 AS S2$
3120 PRINT:PRINT"Checking messages ";
3130 GET#2,1:GOSUB 510
3140 KLE=VAL(MID$(S2$,1,8)) 'number of last message on system
3150 KCJ=VAL(MID$(S2$,11,10)) 'current caller number
3160 KREC1=VAL(MID$(S2$,52,5)) 'record number of first record in the USERS file
3170 KNUR=VAL(MID$(S2$,57,5)) 'record number of next available record in user file
3180 KHUR=VAL(MID$(S2$,62,5)) 'record number of last record in USERS file
3190 KFMR=VAL(MID$(S2$,68,7)) 'record number where first message begins
3200 KNMR=VAL(MID$(S2$,75,7)) 'record number of next available record in msg file
3210 KHMR=VAL(MID$(S2$,82,7)) 'record number of the last record in message file
3220 GOSUB 510
3230 IF KLE=0 OR KFMR=0 OR KNMR=0 OR KHMR=0 THEN CLOSE 2:PRINT:PRINT:DISP$="++ NOT A RBBS-PC MESSAGE FILE ++":GOSUB 610:GOSUB 570:CLOSE 2:FOR A=1 TO 2000:NEXT:GOTO 1390
3240 KNXTMSG=KNMR
3250 KLE = KLE + 1
3260 FOR A = FETCH TO FETCH + MSGLN - 1
3270 GET#1,A
3280 S1$=S$
3290 IF A>FETCH THEN 3330
3300 KMT$=STR$(KLE)
3310 IF LEN(KMT$)<4 THEN KMT$ = " " + KMT$ : GOTO 3310
3320 MID$(S1$,2,4) = KMT$
3330 LSET S2$ = S1$
3340 PUT #2,KNMR : KNMR = KNMR + 1
3350 NEXT A : PRINT "COPY COMPLETED ";:IF DISP$="" THEN 3460
3360 GET#2,1:S1$=S2$
3370 KNMR$=STR$(KNMR) : KLE$ = STR$(KLE)
3380 IF LEN(KLE$) < 8 THEN KLE$ =KLE$ + " " : GOTO 3380
3390 IF LEN(KNMR$)<7 THEN KNMR$=KNMR$ + " " : GOTO 3390
3400 MID$(S1$,1,8) = KLE$
3410 MID$(S1$,75,7)=KNMR$
3420 LSET S2$=S1$:PUT#2,1 'done
3430 CLOSE 2:CLS:GOTO 1390
3440 '
3450 BEEP:GOTO 1700
3460 BEEP:CLS:COLOR 31:PRINT"THIS VERSION HAS BEEN TAMPERED WITH.
3470 COLOR 7,0:PRINT"CALL DIAL-A-GURU BBS (718) 624-8614 TO DOWNLOAD LATEST UNTAMPERED VERSION"
3480 PRINT"OR WRITE WAYNE BOYD, 305 SCHERMERHORN STREET, BROOKLYN, NY 11217"
3490 PRINT"AND INCLUDE $15 AND WE WILL SEND IT TO YOU ON DISK."
3500 PRINT"THANK YOU, AND DON'T REMOVE THIS NOTICE!":PRINT:PRINT